//#define _CRT_SECURE_NO_WARNINGS  1
////一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
////一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
//#include<string>
//#include<iostream>
//using namespace std;
////class father1 {
////public:
////	int _mA;
////protected:
////	int _mB;
////private:
////	int _mC;
////};
//////公共继承
////class son1:public father1
////{
////public:
////	void test1()
////	{
////		_mA = 100;//父亲中的公共，权限成员，到子类中依然是公共权限成员
////		_mB = 200;//父亲中的保护权限成员，到子类中依然是保护权限成员
////		//_mC = 100;父亲中的私有权限成员，不能访问
////	}
////};
////void test()
////{
////	son1  s1;
////	s1._mA = 100;
////	//s1._mB = 100;到了son1中 _mB是保护权限，类外访问不了
////}
////class father2 {
////	public:
////		int _mA;
////	protected:
////		int _mB;
////	private:
////		int _mC;
////};
////class son2 :protected father2 {
////public:
////	void test()
////	{
////		_mA = 100;//父亲中的公共权限，到子类中变为保护权限
////		_mB = 100;//父亲中的保护权限，到字类中依旧是保护权限
////		//_mC = 100；
////	}
////};
////void test()
////{
////	son2 s2;
////	//s2._mA = 100;
////	//s2.mB = 200;
////}
//class father3 {
//	public:
//		int _mA;
//	protected:
//		int _mB;
//	private:
//		int _mC;
//};
//class son3 :private father3 {
//public:
//	void test()
//	{
//		_mA = 100;//父亲中公共权限，到子类中是私有权限
//		_mB = 200;//父亲中保护权限，到子类中是私有权限
//		//_mC = 300;
//	}
//};
//
//class grandson :public son3 {
//public:
//	void test()
//	{
//		//_mA = 100;
//	}
//};
//void test()
//{
//	son3 s3;
//	/*s3._mA = 100;
//	s3._mB = 100;*/
//}
//int main()
//{
//	test();
//	return 0;
//}